#include "hc_log.h"


static void lpuart0_tx_pin_init(void);
static void lpuart0_config(void);


void hc_log_init(void)
{
    lpuart0_tx_pin_init();
    lpuart0_config();
}



static void lpuart0_tx_pin_init(void)  //PA02
{
    stc_gpio_init_t stcGpioInit = {0};
    
    ///< 外设时钟使能
    SYSCTRL_PeriphClkEnable(SYSCTRL_PERICLK_PA);
    
    ///< UART端口初始化
    stcGpioInit.u32Mode = GPIO_MODE_OUTPUT_PP;
    stcGpioInit.u32Pin  = GPIO_PIN_02;
    stcGpioInit.u32Pull = GPIO_PULL_UP;
    GPIOA_Init(&stcGpioInit);
    
    GPIO_PA02_AF_LPUART0_TXD_SET();
}


static void lpuart0_config(void)
{
     stc_lpuart_init_t  stcInit = {0};
    
    ///<外设模块时钟使能
    SYSCTRL_PeriphClkEnable(SYSCTRL_PERICLK_LPUART0);    
    
    ///<LPUART 初始化
    stcInit.u32StopBits    = LPUART_STOPBITS_1;            ///< 1停止位
    stcInit.u32Parity      = LPUART_PARITY_NONE;           ///< 无校验
    stcInit.u32FrameLength = LPUART_FRAME_LEN_8BITS;       ///< 帧长8位
    stcInit.u32TransMode   = LPUART_MODE_TX;               ///< 发送模式
    stcInit.stcBaudRate.u32SclkSrc  = LPUART_CLKSRC_PCLK;  ///< 传输时钟源
    stcInit.stcBaudRate.u32Sclk     = SYSCTRL_GetPCLK();   ///< PCLK获取
    stcInit.stcBaudRate.u32BaudRate = 19200;                ///< 波特率

    LPUART_Init(LPUART0, &stcInit); 
}


PUTCHAR_PROTOTYPE
{
    LPUART_Transmit(LPUART0, (uint8_t*)(&ch), 1, 0xFFFFFF);
    return ch;
}

